// import 'dart:async';
// import 'dart:math';

// import 'package:applovin_max/applovin_max.dart';
// import 'package:flutter/widgets.dart';
// import 'package:get/get.dart';
// import 'package:pulse_ark/module/user_manager/user_manager.dart';
// import 'package:pulse_ark/utils/network/config/config_default.dart';

// /// max广告
// class MaxService extends GetxService {
//   static MaxService get to => Get.find();

//   bool _adDisplaying = false;
//   bool get adDisplaying => _adDisplaying;

//   /// 激励视频unitId
//   final String _rewardedAdUnitId = UserManager().maxRewardId;

//   /// 最大重试次数
//   final int _maxExponentialRetryCount = 6;

//   /// 重试timer
//   Timer? _retryTimer;

//   /// 当前重试次数
//   var _rewardedAdRetryAttempt = 0;

//   Function(bool isCompleted)? _mOnAdClosedCallback;
//   Function(MaxAd ad)? _mOnAdDisplayedCallback;

//   Function(MaxAd ad, MaxReward reward)? _mOnAdReceivedRewardCallback;

//   @override
//   void onInit() {
//     super.onInit();

//     // 初始化代码
//     _initMax();
//   }

//   void _initMax() async {
//     /// 开启cmp 弹框
//     AppLovinMAX.setTermsAndPrivacyPolicyFlowEnabled(true);
//     AppLovinMAX.setPrivacyPolicyUrl(privacyUrl);
//     AppLovinMAX.setTermsOfServiceUrl(aboutUsUrl);
//     //UserManager().maxAppKey为空字符串，程序会崩溃。
//     // MaxConfiguration? sdkConfiguration = await AppLovinMAX.initialize(UserManager().maxAppKey);
//     // if (sdkConfiguration != null) {
//     //   _initializeRewardedAd();

//     //   loadRewardedAd();
//     // }
//   }

//   void _initializeRewardedAd() {
//     AppLovinMAX.setRewardedAdListener(
//       RewardedAdListener(
//           onAdLoadedCallback: (ad) {
//             // Rewarded ad is ready to show. AppLovinMAX.isRewardedAdReady(_rewarded_ad_unit_id) now returns 'true'
//             Tools.log('Rewarded ad loaded from ${ad.networkName}');

//             // Reset retry attempt
//             _rewardedAdRetryAttempt = 0;
//           },
//           onAdLoadFailedCallback: (adUnitId, error) {
//             // Rewarded ad failed to load
//             // AppLovin recommends that you retry with exponentially higher delays up to a maximum delay (in this case 64 seconds)
//             _rewardedAdRetryAttempt = _rewardedAdRetryAttempt + 1;

//             if (_rewardedAdRetryAttempt > _maxExponentialRetryCount) return;

//             int retryDelay = pow(2, min(_maxExponentialRetryCount, _rewardedAdRetryAttempt)).toInt();
//             Tools.log('Rewarded ad failed to load with code ${error.code} - retrying in ${retryDelay}s');

//             // 创建一个单次定时任务，比如延迟5秒执行
//             _cancelRetryTimer();
//             _retryTimer = Timer(Duration(seconds: retryDelay), () {
//               loadRewardedAd();
//             });
//           },
//           onAdDisplayedCallback: (ad) {
//             _mOnAdDisplayedCallback?.call(ad);
//             Tools.log("");
//           },
//           onAdDisplayFailedCallback: (ad, error) {
//             _mOnAdClosedCallback?.call(false);
//           },
//           onAdClickedCallback: (ad) {},
//           onAdHiddenCallback: (ad) {
//             _adDisplaying = false;
//             _mOnAdClosedCallback?.call(true);
//             loadRewardedAd();
//           },
//           // onAdRevenuePaidCallback: (ad) {
//           //   FirebaseReport.logAdImpression(ad);
//           //   AdjustReport.trackAdRevenue(ad);
//           // },
//           onAdReceivedRewardCallback: (ad, reward) {
//             _mOnAdReceivedRewardCallback?.call(ad, reward);
//           }),
//     );
//   }

//   void loadRewardedAd() {
//     AppLovinMAX.loadRewardedAd(_rewardedAdUnitId);
//   }

//   Future<bool?> isRewardedAdReady() {
//     return AppLovinMAX.isRewardedAdReady(_rewardedAdUnitId);
//   }

//   void showRewardedAd(
//       {Function(bool isCompleted)? onAdClosedCallback,
//       Function(MaxAd ad)? onAdDisplayedCallback,
//       Function(MaxAd ad, MaxReward reward)? onAdReceivedRewardCallback}) {
//     _mOnAdClosedCallback = onAdClosedCallback;
//     _mOnAdDisplayedCallback = onAdDisplayedCallback;
//     _mOnAdReceivedRewardCallback = onAdReceivedRewardCallback;

//     AppLovinMAX.isRewardedAdReady(_rewardedAdUnitId).then((value) {
//       if (value == true) {
//         Tools.log("show rewarded ad");
//         _adDisplaying = true;
//         AppLovinMAX.showRewardedAd(_rewardedAdUnitId);
//       } else {
//         Tools.log("rewarded ad not ready");
//         _mOnAdClosedCallback?.call(false);
//         loadRewardedAd();
//       }
//     });
//   }

//   _cancelRetryTimer() {
//     _retryTimer?.cancel();
//     _retryTimer == null;
//   }

//   @override
//   void onClose() {
//     _cancelRetryTimer();
//     super.onClose();
//   }
// }
